home *** CD-ROM | disk | FTP | other *** search
/ Collection of Tools & Utilities / Collection of Tools and Utilities.iso / bbsutil / hsrc_117.zip / SCANMESS.C < prev    next >
C/C++ Source or Header  |  1990-11-24  |  3KB  |  108 lines

  1. #include "msgg.h"
  2. #include "twindow.h"
  3. #include "keys.h"
  4. #include "headedit.h"
  5.  
  6. extern WINDOW *ewnd;
  7.  
  8.  
  9. void pascal scan_mess (void) {
  10.  
  11.     char s[60];
  12.     char lowstr[6];
  13.     word low;
  14.     int returncode;
  15.     char counter;
  16.     word tempmess;
  17.     WINDOW *wnd;
  18.     FIELD *fld;
  19.  
  20.         wnd=establish_window(4,maxy-7,5,32);
  21.         set_border(wnd,3);
  22.         set_title(wnd," Message Scanner ");
  23.         set_colors(wnd,BORDER,7,0,0);
  24.         display_window(wnd);
  25.         wcursor(wnd,0,0);
  26.         wprintfraw(wnd," F10 to scan or ESC to abort");
  27.         if (lastread[areano-1]<nomess) sprintf(lowstr,"%u",lastread[areano-1]);
  28.         else strcpy(lowstr,"1");
  29.         init_template(wnd);
  30.         sprintf(s,"From (1-%05u):",nomess);
  31.         wprompt(wnd,2,2,s);
  32.         fld=establish_field(wnd,18,2,msk5,lowstr,'N');
  33.         field_window(fld,"low       ",40,6);
  34.         prep_template(wnd);
  35. Over:
  36.         returncode=data_entry(wnd);
  37.         if (returncode==ESC) {
  38.             delete_window(wnd);
  39.             return;
  40.         }
  41.         if (returncode!=F10) goto Over;
  42.         low=(word)atol(lowstr);
  43.         if (low>nomess || low<1) {
  44.             error_message(" Invalid. ");
  45.             nopause();
  46.             goto Over;
  47.         }
  48.         delete_window(wnd);
  49.         wnd=establish_window(0,0,maxy,maxx);
  50.         set_border(wnd,1);
  51.         sprintf(s," Scanning Area#%u ",areano);
  52.         set_title(wnd,s);
  53.         display_window(wnd);
  54.         wcursor(wnd,0,0);
  55.         counter=0;
  56.         tempmess=messno;
  57.         while(1) {
  58.             messno=low++;
  59.             get_mess(1);
  60.             reverse_video(wnd);
  61.             wprintfraw(wnd,"%05u Subj: %-63s",messno,msg2.subj);
  62.             normal_video(wnd);
  63.             wputchar(wnd,'\n');
  64.             wprintfraw(wnd,"Fm: %-32s To: %s",msg2.from,msg2.to);
  65.             wputchar(wnd,'\n');
  66.             wprintfraw(wnd,"%s %s",msg2.date,quick_attr());
  67.             wputchar(wnd,'\n');
  68.             counter++;
  69.             if (counter>=((maxy-2)/3) || low>nomess) {
  70. OverAgain:
  71.                 any_message(" PageUp/Dn, Home, End, ESC ");
  72.                 counter=0;
  73.                 returncode=toupper(generic_mouse_input(ewnd));
  74.                 clear_message();
  75.                 switch (returncode) {
  76.                     case 45:
  77.                     case PGUP:  if(low<=(((maxy-2)/3)+1)) goto DoEnd;
  78.                                 if (low<(((maxy-2)/3)*2)+1) low=1;
  79.                                 else low-=(((maxy-2)/3)*2);
  80.                                 break;
  81.                     case PGDN:
  82.                     case 13:    if (low>=nomess) low=1;
  83.                                 if ((nomess-low)<((maxy-2)/3)) goto DoEnd;
  84.                                 break;
  85.                     case 32:
  86.                     case ESC:   goto BreakOut;
  87.                     case END:
  88. DoEnd:
  89.                                 if (nomess>(((maxy-2)/3)-1)) low=nomess-(((maxy-2)/3)-1);
  90.                                 else low=1;
  91.                                 break;
  92.                     case HOME:  low=1;
  93.                                 break;
  94.                     default:    bell();
  95.                                 goto OverAgain;
  96.                 }
  97.                 clear_message();
  98.                 clear_window(wnd);
  99.                 wcursor(wnd,0,0);
  100.             }
  101.         }
  102. BreakOut:
  103.         delete_window(wnd);
  104.         messno=tempmess;
  105.         clear_message();
  106. }
  107.  
  108.